package com.wangpeng.bms.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.Base64;
import java.util.Random;

/**
 * 生成Token的工具类
 */
public class TokenProcessor {

    private TokenProcessor() {
    }

    private static final TokenProcessor instance = new TokenProcessor();

    public static TokenProcessor getInstance() {
        return instance;
    }

    /**
     * 生成Token
     *
     * @return 生成的Token字符串
     */
    public String makeToken() {
        String token = (System.currentTimeMillis() + new Random().nextInt(999999999)) + "";
        try {
            MessageDigest md = MessageDigest.getInstance("md5");
            byte[] md5Bytes = md.digest(token.getBytes());
            // 使用java.util.Base64进行编码
            String encodedToken = Base64.getEncoder().encodeToString(md5Bytes);
            return encodedToken;
        } catch (NoSuchAlgorithmException e) {
            // 理论上不会发生，因为MD5是标准算法
            e.printStackTrace();
        }
        // 如果发生异常，返回null或抛出一个运行时异常
        return null; // 或者考虑抛出一个自定义的异常
    }
}